<?php
class Delivery_Model_DbTable_DireccionesCliente
	extends Delivery_Model_DbTable_Desactivable

{
	protected $_name = 'cliente_direcciones';
	protected $_primary = 'idDireccionCliente';
	
	public function insert( $direccion ){
		
		return parent::insert(		
			$this->_fecha( $this->_getData( $direccion ), true, true )
		);	
	}
	
	public function update( $direccion ){
		
		return parent::update(
			$this->_fecha( $this->_getData( $direccion ), false, true ),
			array('idDireccionCliente = ?' => $direccion->idDireccionCliente)
		
		);
	}
	
	public function delete( $direccion ){
		
		return parent::delete(		
			array ('idDireccionCliente = ?'	=> $direccion->idDireccionCliente) 
		);	
	}
	
	public function getById( $idDireccionCliente , $depto = null){
		
	
		// usar siempre asi cuando hay un join
		 $select = $this->select(self::SELECT_WITH_FROM_PART)
		 				->setIntegrityCheck(false)
		 						
	             		->join(	'direcciones',
	             				'direcciones.idDireccion = cliente_direcciones.idDireccion',
	             				array('idDireccion', 'calle', 'numero', 'barrio', 'idCiudad', 'latitud'=>'X(punto)', 'longitud'=>'Y(punto)'))		
						->where('cliente_direcciones.idDireccionCliente = ?', $idDireccionCliente, Zend_Db::INT_TYPE);

		if ( ! is_null($depto)){
			$select->where('cliente_direcciones.depto = ?', $depto);
		}				

		return $this->_db->fetchRow($select);
	}
	
	protected function _getData( $direccion )
	{
   		return array (
			'idCliente'		=> $direccion->idCliente,
   			'idDireccion'	=> $direccion->idDireccion,
   			'nombre'		=> $direccion->nombre,
   			'depto'			=> $direccion->depto,
   			'activo'		=> $direccion->activo
   		);
	
	} 
	
	public function getByCliente( $idCliente ){
		
		// usar siempre asi cuando hay un join	
		 $select = $this->select(self::SELECT_WITH_FROM_PART)
		 				->setIntegrityCheck(false)						
	             		->join(	'direcciones',
	             				'direcciones.idDireccion = cliente_direcciones.idDireccion',
	             				array('idDireccion', 'calle', 'numero', 'barrio', 'idCiudad', 'latitud'=>'X(punto)', 'longitud'=>'Y(punto)')
	             		)				
						->where('idCliente = ?', $idCliente, Zend_Db::INT_TYPE)	;
		
		return $this->_db->fetchAll($select);
	}
	
	public function traerPorCliente( $idCliente ){
		return $this->getByCliente( $idCliente );
	}
	
	
	
}